#ifndef PIXEL_H
#define PIXEL_H
/**
 * \file Pixel.h
 * \brief Pixel int RVB
 *
 */

#ifndef byte
typedef double byte;
#endif

/*! \class Pixel
* \brief Classe Pixel int RVB
*
*  La classe permet l'utilisation de Pixel RVB en int
*/

class Pixel
{
public :
/*!
 *  \brief Constructeur
 *
 *  Constructeur de la classe Pixel
 *
 *  \param _r : Composante rouge
 *  \param _v : Composante verte
 *  \param _b : Composante bleu
 */
	Pixel( byte _r=0, byte _v=0, byte _b=0 );
/*!
 *  \brief Constructeur par recopie
 *
 *  Constructeur par recopie de la classe Pixel
 *
 *  \param p : Pixel à recopier
 */
	Pixel(const Pixel& p);

/*!
 *  \brief Destructeur
 *
 *  Destructeur de la classe Image
 */
	~Pixel();

/*!
 *  \brief Acceseur rouge
 *
 *  Accesseur pour la valeur rouge
 *
 * \return la valeur rouge du pixel
 */
	byte getR();
/*!
 *  \brief Acceseur vert
 *
 *  Accesseur pour la valeur verte
 *
 * \return la valeur verte du pixel
 */
	byte getV();
/*!
 *  \brief Acceseur bleu
 *
 *  Accesseur pour la valeur bleu
 *
 * \return la valeur bleu du pixel
 */
	byte getB();
	
	void N();
	
	Pixel &operator+=(const Pixel &);
	friend Pixel operator*(const Pixel&, const double&);
	friend Pixel operator+(const Pixel&, const Pixel&);
	friend Pixel operator-(const Pixel&, const Pixel&);
	double operator[](unsigned int i) const;
	double& operator[](unsigned int i);



	//Pixel operator*(const float);
	
private:
	//byte r; /*!<Valeur rouge*/
	//byte v; /*!<Valeur verte*/
	//byte b; /*!<Valeur bleu*/
	byte v[3]; /*!<Valeurs*/
};

#endif
